package com.cke.yang.storage.domain.repository;

import com.cke.yang.common.infra.enums.SaveActionEnum;
import com.cke.yang.storage.domain.entity.StgSource;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;

import java.util.List;

/**
 * @author: luozhaojian
 * @description: 存储模块-数据源仓储层
 * @date: 2025/10/7 11:03
 */
public interface StgSourceRepository {

    /**
     * 根据不同动作执行不同逻辑
     * @param action
     * @param stgSource
     */
    StgSource saveByAction(SaveActionEnum action, StgSource stgSource);

    /**
     * 插入
     * @param stgSource
     * @return
     */
    StgSource insert(StgSource stgSource);

    /**
     * 更新
     * @param stgSource
     * @return
     */
    StgSource update(StgSource stgSource);

    /**
     * 删除
     * @param stgSource
     * @return
     */
    StgSource delete(StgSource stgSource);

    /**
     * 找到默认的数据源并更新为非默认
     */
    void selectDefaultAndUpdate();

    /**
     * 更新
     * @param updateWrapper
     */
    void updateByWrapper(UpdateWrapper<StgSource> updateWrapper);

    /**
     * 根据存储源所有者查询存储源列表
     * @param sourceOwner 存储源所有者ID
     * @return 存储源列表
     */
    List<StgSource> findBySourceOwner(Long sourceOwner);
}
